/*******************************************************************************
 * KindEditor - WYSIWYG HTML Editor for Internet Copyright (C) 2006-2011
 * kindsoft.net
 * 
 * @author Roddy <luolonghao@gmail.com>
 * @site http://www.kindsoft.net/
 * @licence http://www.kindsoft.net/license.php
 ******************************************************************************/

// Baidu Maps: http://dev.baidu.com/wiki/map/index.php?title=%E9%A6%96%E9%A1%B5
KindEditor.plugin('baidumap', function(K) {
	var self = this, name = 'baidumap', lang = self.lang(name + '.');
	var mapWidth = K.undef(self.mapWidth, 558);
	var mapHeight = K.undef(self.mapHeight, 360);
	self.clickToolbar(name, function() {
		var html = [
				'<div style="padding:10px 20px;">',
				'<div class="ke-header">',
				// left start
				'<div class="ke-left">',
				lang.address
						+ ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
				'<span class="ke-button-common ke-button-outer">',
				'<input type="button" name="searchBtn" class="ke-button-common ke-button" value="'
						+ lang.search + '" />',
				'</span>',
				'</div>',
				// right start
				'<div class="ke-right">',
				'<input type="checkbox" id="keInsertDynamicMap" name="insertDynamicMap" value="1" /> <label for="keInsertDynamicMap">'
						+ lang.insertDynamicMap + '</label>',
				'</div>',
				'<div class="ke-clearfix"></div>',
				'</div>',
				'<div class="ke-map" style="width:' + mapWidth + 'px;height:'
						+ mapHeight + 'px;"></div>', '</div>'].join('');
		var dialog = self.createDialog({
					name : name,
					width : mapWidth + 42,
					title : self.lang(name),
					body : html,
					yesBtn : {
						name : self.lang('yes'),
						click : function(e) {
							var map = win.map;
							var centerObj = map.getCenter();
							var center = centerObj.lng + ',' + centerObj.lat;
							var zoom = map.getZoom();
							var url = [
									checkbox[0].checked
											? self.pluginsPath
													+ 'baidumap/index.html'
											: 'http://api.map.baidu.com/staticimage',
									'?center=' + encodeURIComponent(center),
									'&zoom=' + encodeURIComponent(zoom),
									'&width=' + mapWidth,
									'&height=' + mapHeight,
									'&markers=' + encodeURIComponent(center),
									'&markerStyles='
											+ encodeURIComponent('l,A')]
									.join('');
							if (checkbox[0].checked) {
								self.insertHtml('<iframe src="' + url
										+ '" frameborder="0" style="width:'
										+ (mapWidth + 2) + 'px;height:'
										+ (mapHeight + 2) + 'px;"></iframe>');
							} else {
								self.exec('insertimage', url);
							}
							self.hideDialog().focus();
						}
					},
					beforeRemove : function() {
						searchBtn.remove();
						if (doc) {
							doc.write('');
						}
						iframe.remove();
					}
				});
		var div = dialog.div, addressBox = K('[name="address"]', div), searchBtn = K(
				'[name="searchBtn"]', div), checkbox = K(
				'[name="insertDynamicMap"]', dialog.div), win, doc;
		var iframe = K('<iframe class="ke-textarea" frameborder="0" src="'
				+ self.pluginsPath + 'baidumap/map.html" style="width:'
				+ mapWidth + 'px;height:' + mapHeight + 'px;"></iframe>');
		function ready() {
			win = iframe[0].contentWindow;
			doc = K.iframeDoc(iframe);
		}
		iframe.bind('load', function() {
					iframe.unbind('load');
					if (K.IE) {
						ready();
					} else {
						setTimeout(ready, 0);
					}
				});
		K('.ke-map', div).replaceWith(iframe);
		// search map
		searchBtn.click(function() {
					win.search(addressBox.val());
				});
	});
});
